package com.ruoyi.system.service;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.domain.TbVisitorVehicle;
import com.ruoyi.system.domain.TbWeighbridge;
import com.ruoyi.system.domain.dto.DtoCheckUser;
import com.ruoyi.system.domain.dto.DtoVehicle;

import java.util.List;

/**
 * 车辆预约信息Service接口
 * 
 * @author ruoyi
 * @date 2024-04-10
 */
public interface ITbVisitorVehicleService 
{
    /**
     * 查询车辆预约信息
     * 
     * @param id 车辆预约信息主键
     * @return 车辆预约信息
     */
    public TbVisitorVehicle selectTbVisitorVehicleById(Long id);

    /**
     * 查询车辆预约信息(By Open ID)
     *
     * @param openId
     * @return 车辆预约信息
     */
    public TbVisitorVehicle selectTbVisitorVehicleByOpenId(String openId);

    /**
     *车牌号码查询车辆预约信息
     * @param carPlate
     * @return
     */
    public TbVisitorVehicle selectTbVisitorVehicleByPlate(String  carPlate);

    /**
     * 查询车辆预约信息(By Flow ID)
     *
     * @param flowId
     * @return 车辆预约信息
     */
    public TbVisitorVehicle selectTbVisitorVehicleByFlowId(String flowId);

    /**
     * 查询车辆预约信息列表
     * 
     * @param tbVisitorVehicle 车辆预约信息
     * @return 车辆预约信息集合
     */
    public List<TbVisitorVehicle> selectTbVisitorVehicleList(DtoVehicle tbVisitorVehicle);

    /**
     * 新增车辆预约信息
     * 
     * @param tbVisitorVehicle 车辆预约信息
     * @return 结果
     */
    public int insertTbVisitorVehicle(TbVisitorVehicle tbVisitorVehicle);

    /**
     * 修改车辆预约信息
     * 
     * @param tbVisitorVehicle 车辆预约信息
     * @return 结果
     */
    public int updateTbVisitorVehicle(TbVisitorVehicle tbVisitorVehicle);

    /**
     * 批量删除车辆预约信息
     * 
     * @param ids 需要删除的车辆预约信息主键集合
     * @return 结果
     */
    public int deleteTbVisitorVehicleByIds(Long[] ids);

    /**
     * 删除车辆预约信息信息
     * 
     * @param id 车辆预约信息主键
     * @return 结果
     */
    public int deleteTbVisitorVehicleById(Long id);

    /**
     * 查询车辆预约信息信息(列表数据数)
     *
     * @return 网格信息集合
     */
    public int selectTbVisitorVehicleCnt(DtoVehicle tbVisitorVehicle);

    /**
     * 车辆入场查询
     *
     * @param tbVisitorVehicle 车辆预约信息
     * @return 车辆预约信息
     */
    public TbVisitorVehicle selectTbVisitorVehicleLimit(DtoVehicle tbVisitorVehicle);

    /**
     * 删除车辆预约信息(逻辑删除)
     *
     * @param id 车辆预约信息主键
     * @return 结果
     */
    public int deleteLogicTbVisitorVehicleById(Long id);

    /**
     * 保存地磅信息
     * @param tbWeighbridge
     * @return
     */
    AjaxResult saveWeighbridgeInfo(TbWeighbridge tbWeighbridge);

    /**
     * 查询重量
     * @param vehicleId
     * @return
     */
    public TbWeighbridge selectWeightByVehicleId(Long vehicleId);

    /**
     * 今日入场货物总量
     * @return
     */
    public Long selectAllGrossToday();

    /**
     * 查询访客预约信息列表
     *
     * @param tbVisitorUser 访客预约信息
     * @return 访客预约信息集合
     */
    public List<TbVisitorVehicle> checkTbVisitorVehicleList(DtoCheckUser tbVisitorUser);

    /**
     * 语音转文字并播放
     *
     * @param text
     */
    public String textToSpeech(String text);
}
